Transpose matrix [Copy Directly]

Time: O(RxC); Space: O(1); easy

Note:

  • R - the number of rows in the given matrix A

  • C - the number of columns

Given a matrix A, return the transpose of A. The transpose of a matrix is the matrix flipped over it’s main diagonal, switching the row and column indices of the matrix.

Example 1:

Input: A = [[1,2,3],[4,5,6],[7,8,9]]

Output: [[1,4,7],[2,5,8],[3,6,9]]

Example 2:

Input: A = [[1,2,3],[4,5,6]]

Output: [[1,4],[2,5],[3,6]]

Note:

  • 1 <= A.length <= 1000

  • 1 <= A[0].length <= 1000

Intuition and Algorithm The transpose of a matrix A with dimensions R x C is a matrix ans with dimensions C x R for which ans[c][r] = A[r][c]. Let’s initialize a new matrix ans representing the answer. Then, we’ll copy each entry of the matrix as appropriate.

[1]:
class Solution1(object):
    def transpose(self, A):
        """
        :type A: List[List[int]]
        :rtype: List[List[int]]
        """
        R, C = len(A), len(A[0])
        result = [[None] * R for _ in range(C)]

        for r, row in enumerate(A):
            for c, val in enumerate(row):
                result[c][r] = val
        return result
[2]:
s = Solution1()
A = [[1, 2, 3],
     [4, 5, 6],
     [7, 8, 9]]
assert s.transpose(A) == [[1, 4, 7],[2, 5, 8],[3, 6, 9]]
A = [[1, 2, 3],
     [4, 5, 6]]
assert s.transpose(A) == [[1, 4],[2, 5],[3, 6]]
[3]:
class Solution2(object):
    def transpose(self, A):
        """
        :type A: List[List[int]]
        :rtype: List[List[int]]
        """
        return list(zip(*A))
[4]:
s = Solution2()
A = [[1, 2, 3],
     [4, 5, 6],
     [7, 8, 9]]
assert s.transpose(A) == [(1, 4, 7),(2, 5, 8),(3, 6, 9)]
A = [[1, 2, 3],
     [4, 5, 6]]
assert s.transpose(A) == [(1, 4),(2, 5),(3, 6)]